package com.core.ingenium.model;

import java.io.Serializable;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;


@Entity
@NamedQueries( { @NamedQuery(name = "CarreraNivel.findAll", query = "select o from CarreraNivel o") })
@Table(name = "\"carreranivel\"")
public class CarreraNivel implements Serializable {
    @Column(name = "codigo")
    private String codigo;
    @Column(name = "descripcion")
    private String descripcion;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private int id;
    @OneToMany(mappedBy = "carreraNivel")
    private List<Estudiante> lstEstudiantes;
    @ManyToOne
    @JoinColumn(name = "carrera")
    private Carrera carrera;
    @ManyToOne
    @JoinColumn(name = "nivel")
    private Nivel nivel;
    public CarreraNivel() {
    }

    public CarreraNivel(Carrera carrera, String codigo, String descripcion, int id, Nivel nivel) {
        this.carrera = carrera;
        this.codigo = codigo;
        this.descripcion = descripcion;
        this.id = id;
        this.nivel = nivel;
    }


    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }


    public void setNivel(Nivel nivel) {
        this.nivel = nivel;
    }

    public List<Estudiante> getLstEstudiantes() {
        return lstEstudiantes;
    }

    public void setLstEstudiantes(List<Estudiante> lstEstudiantes) {
        this.lstEstudiantes = lstEstudiantes;
    }

    public Estudiante addEstudiante(Estudiante estudiante) {
        getLstEstudiantes().add(estudiante);
        estudiante.setCarreraNivel(this);
        return estudiante;
    }

    public Estudiante removeEstudiante(Estudiante estudiante) {
        getLstEstudiantes().remove(estudiante);
        estudiante.setCarreraNivel(null);
        return estudiante;
    }

    public void setCarrera(Carrera carrera) {
        this.carrera = carrera;
    }

    public Carrera getCarrera() {
        return carrera;
    }

    public Nivel getNivel() {
        return nivel;
    }
}
